package com.example.javaow.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.time.LocalDateTime;

@Data
@TableName("device_message")
public class DeviceMessage {

    // 主键ID
    @TableId(type = IdType.AUTO)
    private Long id;

    // 消息ID（可选，用于去重）
    @TableField("message_id")
    private String messageId;

    // 消息类型: telemetry, command, response, alert, heartbeat
    @TableField("message_type")
    private String messageType;

    // 设备地址码，关联 device.device_address
    @TableField("device_address")
    private String deviceAddress;

    // 设备名称（冗余，便于查询）
    @TableField("device_name")
    private String deviceName;

    // 下发指令，如：open, close, reboot
    private String command;

    // 指令下发时间
    @TableField("command_time")
    private LocalDateTime commandTime;

    // 操作人（后台用户或系统）
    @TableField("command_by")
    private String commandBy;

    // 设备返回的响应内容，如：已开启、失败：电机故障
    private String response;

    // 设备响应时间
    @TableField("response_time")
    private LocalDateTime responseTime;

    // 上报的JSON数据，如：{"temperature": 45.2, "voltage": 12.4, "angle": 90}
    @TableField("data_json")
    private String dataJson;

    // 通信状态，默认值为 success
    private String status;

    // 消息创建时间
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createtime;

    // 更新时间
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatetime;
}
